1   /*
2    * Copyright (C) 2009 The Guava Authors
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.google.common.collect;
18  
19  import java.util.Collections;
20  
21  /**
22   * Unit test for {@link ForwardingMultimap}.
23   *
24   * @author Hayward Chan
25   */
26  public class ForwardingMultimapTest extends ForwardingTestCase {
27  
28    // Package-private so subclasses can access this variable.
29    Multimap<String, Boolean> forward;
30  
31    @Override public void setUp() throws Exception {
32      super.setUp();
33      /*
34       * Class parameters must be raw, so we can't create a proxy with generic
35       * type arguments. The created proxy only records calls and returns null, so
36       * the type is irrelevant at runtime.
37       */
38      @SuppressWarnings("unchecked")
39      final Multimap<String, Boolean> multimap =
40          createProxyInstance(Multimap.class);
41      forward = new ForwardingMultimap<String, Boolean>() {
42        @Override protected Multimap<String, Boolean> delegate() {
43          return multimap;
44        }
45      };
46    }
47  
48    public void testSize() {
49      forward.size();
50      assertEquals("[size]", getCalls());
51    }
52  
53    public void testIsEmpty() {
54      forward.isEmpty();
55      assertEquals("[isEmpty]", getCalls());
56    }
57  
58    public void testContainsKey_Object() {
59      forward.containsKey("asdf");
60      assertEquals("[containsKey(Object)]", getCalls());
61    }
62  
63    public void testContainsValue_Object() {
64      forward.containsValue("asdf");
65      assertEquals("[containsValue(Object)]", getCalls());
66    }
67  
68    public void testContainsEntry_Object_Object() {
69      forward.containsEntry("asdf", false);
70      assertEquals("[containsEntry(Object,Object)]", getCalls());
71    }
72  
73    public void testPut_Key_Value() {
74      forward.put("asdf", true);
75      assertEquals("[put(Object,Object)]", getCalls());
76    }
77  
78    public void testRemove_Key_Value() {
79      forward.remove("asdf", false);
80      assertEquals("[remove(Object,Object)]", getCalls());
81    }
82  
83    public void testPutAll_Key_Iterable() {
84      forward.remove("asfd", Collections.<Boolean>emptyList());
85      assertEquals("[remove(Object,Object)]", getCalls());
86    }
87  
88    public void testPutAll_Multimap() {
89      forward.putAll(ArrayListMultimap.<String, Boolean>create());
90      assertEquals("[putAll(Multimap)]", getCalls());
91    }
92  
93    public void testReplaceValues_Key_Iterable() {
94      forward.replaceValues("key", Collections.<Boolean>emptyList());
95      assertEquals("[replaceValues(Object,Iterable)]", getCalls());
96    }
97  
98    public void testRemoveAll_Object() {
99      forward.removeAll("key");
100     assertEquals("[removeAll(Object)]", getCalls());
101   }
102 
103   public void testClear() {
104     forward.clear();
105     assertEquals("[clear]", getCalls());
106   }
107 
108   public void testGet_Key() {
109     forward.get(null);
110     assertEquals("[get(Object)]", getCalls());
111   }
112 
113   public void testKeySet() {
114     forward.keySet();
115     assertEquals("[keySet]", getCalls());
116   }
117 
118   public void testKeys() {
119     forward.keys();
120     assertEquals("[keys]", getCalls());
121   }
122 
123   public void testValues() {
124     forward.values();
125     assertEquals("[values]", getCalls());
126   }
127 
128   public void testEntries() {
129     forward.entries();
130     assertEquals("[entries]", getCalls());
131   }
132 
133   public void testAsMap() {
134     forward.asMap();
135     assertEquals("[asMap]", getCalls());
136   }
137 
138   public void testEquals() {
139     forward.equals(null);
140     assertEquals("[equals(Object)]", getCalls());
141   }
142 
143   public void testHashCode() {
144     forward.hashCode();
145     assertEquals("[hashCode]", getCalls());
146   }
147 
148   public void testToString() {
149     forward.toString();
150     assertEquals("[toString]", getCalls());
151   }
152 }